<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Object.defineProperty</title>
</head>
<body>

  <script type="text/javascript">
    let number = 19;
    let obj = {
      name: 'zzm',
      sex: '男',
      // age: number,
    }

    Object.defineProperty(obj, 'age', {
      // value: 20,
      // enumerable: true, // 控制属性是否可以枚举，默认为false
      // writable: true, // 控制属性是否可以被修改，默认值为false
      // configurable: true, //控制属性是否可以被删除，默认值为false

      // 【取值】当obj.age被读取时，get函数（getter）就会被调用，且返回的就是age的值
      get() {
        console.log('get被调用了')
        return number;
      },
      
      // 【改值】当obj.age被修改时，set函数（setter）就会被调用，且会收到具体修改的值
      set(value) {
        console.log('被修改值了');
        number = value;
      }
    })
    console.log(obj);
  </script>
  
</body>
</html>